<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"
      >

    <h:head>
        <title>Ajax com JSF 2.0</title>
        <style type="text/css">
            *{
                font-size: 12px !important;
            }
            #bt2{
                position: relative;
                top: -31px;
                left: 65px;
            }

        </style>
    </h:head>

    <p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();"/>  
    <p:dialog modal="true" widgetVar="statusDialog" header="Status"  
              draggable="false" closable="false" >Processando...</p:dialog>

    <h:body onload="#{loginBean.validaUsuarioSessaoPaginas}">
        <p:panel id="panel" header="Agendamento" style="margin-bottom:10px;">  



            <h:form id="formHorarioDoutor">
                <p:messages id="messagesAgendamento" />  
                <h:panelGrid columns="2">
                    <h:outputText  value="Doutor: *" />  
                    <p:selectOneMenu id="doutores" value="#{agendamentoBean.doutorSelecionado}" effect="fade"  disabled="#{agendamentoBean.camposDesativados}">  
                        <f:selectItems value="#{agendamentoBean.retornaDoutores}" var="doutores" itemLabel="#{doutores.nome}" itemValue="#{doutores.idDoutor}"/>  
                    </p:selectOneMenu> 
                </h:panelGrid>
                <h:panelGrid columns="2" width="285">
                    <h:outputLabel for="dataAgendamento" value="Data: *" />  
                    <p:calendar value="#{agendamentoBean.data}" id="dataAgendamento" showOn="button" disabled="#{agendamentoBean.camposDesativados}" required="true" requiredMessage="A data deve ser preenchida."/> 
                </h:panelGrid>
                <h:panelGrid columns="3">
                    <h:outputLabel for="horarioEscolhido" value="Horário Escolhido: *" />  
                    <p:inputText id="horarioEscolhido" value="#{agendamentoBean.horarioEscolhido}" disabled="true"/> 
                    <p:commandButton id="btPesquisarPorData" value="Pesquisar" update=":formPesquisaHorario" onclick="horarioDialog.show()" disabled="#{agendamentoBean.camposDesativados}"/>
                </h:panelGrid>
                <h:panelGrid columns="3">    
                    <h:outputLabel for="clienteEscolhido" value="Cliente: *" />  
                    <p:inputText id="clienteEscolhido" value="#{agendamentoBean.cliente.nome}" disabled="true"/> 
                    <p:commandButton id="btPesquisarCliente" value="Pesquisar" update="formHorarioDoutor" onclick="clienteDialog.show()"  disabled="#{agendamentoBean.camposDesativados}" />
                </h:panelGrid>
                <p:commandButton id="btPesquisarServico" value="Adicionar Serviço" update="formHorarioDoutor" onclick="servicoDialog.show()"  disabled="#{agendamentoBean.camposDesativados}"  />
                <p:dataTable id="servicosCliente" var="servicos" value="#{agendamentoBean.servicosSelecionado}"  rowKey="#{servicos.codServico.idItem}" 
                             selection="#{agendamentoBean.servicoItem}" selectionMode="single" emptyMessage="Nenhum Serviço adicionado">  

                    <p:column headerText="Serviços" width="600">  
                        #{servicos.codServico.descricao}  
                    </p:column>  

                    <f:facet name="footer">  
                        <p:commandButton id="btRemoveServico" value="Excluir" icon="ui-icon-search"   update=":formHorarioDoutor"  actionListener="#{agendamentoBean.removeServico}"  disabled="#{agendamentoBean.camposDesativados}"/>  
                    </f:facet>  

                </p:dataTable>
                <div id="bt1">
                    <p:commandButton id="btSalvarAgendamento" value="Salvar" update="formHorarioDoutor, :formBotoesAgendamento, :formPesquisaAgendamento" actionListener="#{agendamentoBean.salvar}" disabled="#{agendamentoBean.salvarDesativado}"/>
                </div>

            </h:form>

            <div id="bt2">
                <h:form id="formBotoesAgendamento">
                    <p:commandButton id="btNovoAgendamento" update=":formHorarioDoutor, formBotoesAgendamento,:formPesquisaAgendamento" value="Novo" actionListener="#{agendamentoBean.novo}" disabled="#{agendamentoBean.novoDesativado}"/>  
                    <p:commandButton id="btEditarAgendamento" update=":formHorarioDoutor, formBotoesAgendamento, :formPesquisaAgendamento" value="Editar" actionListener="#{agendamentoBean.editar}" disabled="#{agendamentoBean.editarDesativado}"/> 
                    <p:commandButton id="btExcluirAgendamento" update=":formHorarioDoutor, formBotoesAgendamento, :formPesquisaAgendamento" value="Excluir" actionListener="#{agendamentoBean.excluir}" disabled="#{agendamentoBean.excluirDesativado}"/> 
                    <p:commandButton id="btCancelarAgendamento" update=":formHorarioDoutor, formBotoesAgendamento, :formPesquisaAgendamento" value="Cancelar" actionListener="#{agendamentoBean.cancelar}" disabled="#{agendamentoBean.cancelarDesativado}"/>
                    <p:commandButton id="btPesquisarAgendamento" update=":formHorarioDoutor, formBotoesAgendamento, :formPesquisaAgendamento" value="Pesquisar"  disabled="#{agendamentoBean.pesquisarDesativado}" onclick="agendamentoDialog.show()" type="button" />
                </h:form>
            </div>


        </p:panel>


        <p:dialog id="dialogCliente" header="Cliente" widgetVar="clienteDialog" resizable="false"  
                  width="800" height="500" showEffect="clip" hideEffect="fold"> 

            <h:form id="formPesquisaCliente"> 
                <h:outputLabel for="codigoDoutor" value="Nome: *" /> 
                <p:inputText id="codigoDoutor" value="#{agendamentoBean.nomePessoa}" /> 
                <p:commandButton id="btPesquisarDoutorPorNome" value="Pesquisar" update="formPesquisaCliente"  />
                <p:dataTable id="clientes" var="cliente" value="#{agendamentoBean.retornaClientes}" rowKey="#{cliente.idPessoa}"  
                             widgetVar="teste"     selection="#{agendamentoBean.cliente}" selectionMode="single" emptyMessage="Nenhum Cliente encontrado">  

                    <f:facet name="header">  
                        Selecione algum Cliente para o agendamento 
                    </f:facet>  

                    <p:column headerText="Cliente" width="250">  
                        #{cliente.nome}  
                    </p:column>  

                    <p:column headerText="CPF" width="50">  
                        #{cliente.cpf}  
                    </p:column>  

                    <p:column headerText="RG" width="50">  
                        #{cliente.rg}  
                    </p:column>  

                    <p:column headerText="Cidade" width="80">  
                        #{cliente.cidade} 
                    </p:column>  

                    <f:facet name="footer">  
                        <p:commandButton id="viewButtonCliente" value="OK" icon="ui-icon-search"  update=":formHorarioDoutor" onclick="clienteDialog.hide()" />  
                    </f:facet>  

                </p:dataTable> 

            </h:form>
        </p:dialog> 


        <p:dialog id="dialogServico" header="Serviços" widgetVar="servicoDialog" resizable="false"  
                  width="800" height="500" showEffect="clip" hideEffect="fold"> 

            <h:form id="formPesquisaServico"> 
                <h:outputLabel for="codigoServico" value="Serviço: *" /> 
                <p:inputText id="codigoServico" value="#{agendamentoBean.descricaoServico}" /> 
                <p:commandButton id="btPesquisarServicoPorDescricao" value="Pesquisar" update="formPesquisaServico"  />
                <p:dataTable id="servicos" var="servico" value="#{agendamentoBean.retornaServicos}" rowKey="#{servico.idItem}"  
                             widgetVar="teste"     selection="#{agendamentoBean.servico}" selectionMode="single" emptyMessage="Nenhum Serviço encontrado">  

                    <f:facet name="header">  
                        Selecione algum Serviço para o agendamento 
                    </f:facet>  

                    <p:column headerText="Serviço" width="250">  
                        #{servico.descricao}  
                    </p:column>  

                    <p:column headerText="Valor" width="50">  
                        #{servico.valor}  
                    </p:column>   

                    <f:facet name="footer">  
                        <p:commandButton id="viewButtonServico" actionListener="#{agendamentoBean.adicionaServico}" value="OK" icon="ui-icon-search"  update=":formHorarioDoutor" onclick="servicoDialog.hide()" />  
                    </f:facet>  

                </p:dataTable> 

            </h:form>
        </p:dialog> 

        <p:dialog id="dialogHorario" header="Horários" widgetVar="horarioDialog" resizable="false"  
                  width="500" height="400" showEffect="clip" hideEffect="fold"> 

            <h:form id="formPesquisaHorario"> 
                <p:dataTable id="horarioDoutor" var="horarios" value="#{agendamentoBean.horariosDisponiveis}"  rowKey="#{horarios}" scrollable="true" scrollHeight="300"
                             selection="#{agendamentoBean.horarioEscolhido}" selectionMode="single" emptyMessage="Nenhum Horário disponível">  

                    <p:column headerText="Horários" width="425">  
                        #{horarios} 
                    </p:column>  

                    <f:facet name="footer">  
                        <p:commandButton id="viewButtonHorario" value="OK" icon="ui-icon-search"  update=":formHorarioDoutor" onclick="horarioDialog.hide()" />  
                    </f:facet>  

                </p:dataTable> 

            </h:form>    
        </p:dialog>

        <p:dialog id="dialogAgendamento" header="Agendamento" widgetVar="agendamentoDialog" resizable="false"  
                  width="850" height="400" showEffect="clip" hideEffect="fold"> 

            <h:form id="formPesquisaAgendamento"> 
                <h:panelGrid columns="9">
                    <h:outputText  value="Doutor: *" />  
                    <p:selectOneMenu id="doutores" value="#{agendamentoBean.doutorPesquisa}" effect="fade">  
                        <f:selectItems value="#{agendamentoBean.retornaDoutores}" var="doutor" itemLabel="#{doutor.nome}" itemValue="#{doutor.idDoutor}"/>  
                    </p:selectOneMenu>
                    <h:outputLabel for="dataInicial" value="Data Inicial: " />  
                    <p:calendar value="#{agendamentoBean.dataInicial}" id="dataInicial" showOn="button" />
                    <h:outputLabel for="dataFinal" value="Data Final: " />  
                    <p:calendar value="#{agendamentoBean.dataFinal}" id="dataFinal" showOn="button" />
                    <p:commandButton id="btPesquisarAgendamentos" value="Pesquisar" update="agendamentoClientes"  />
                </h:panelGrid>
                <p:dataTable id="agendamentoClientes" var="agendamento" value="#{agendamentoBean.buscaAgendamentos}"  rowKey="#{agendamento.idAgendamento}" 
                             selection="#{agendamentoBean.agendamentoSelecionado}" selectionMode="single" emptyMessage="Nenhum Agendamento disponível">  

                    <p:column headerText="Cliente" width="195">  
                        #{agendamento.codCliente.nome} 
                    </p:column>  
                    <p:column headerText="Doutor" width="195">  
                        #{agendamento.codDoutor.nome} 
                    </p:column> 
                    <p:column headerText="Data" width="60">  
                        #{agendamento.dataAgendamentoFormatada} 
                    </p:column> 
                    <p:column headerText="Horário" width="40">  
                        #{agendamento.horaAgendamentoFormatada} 
                    </p:column> 

                    <f:facet name="footer">  
                        <p:commandButton id="viewButtonAgendamento" value="OK" icon="ui-icon-search"  update=":formHorarioDoutor, :formBotoesAgendamento" onclick="dialogAgendamento.hide()" />  
                    </f:facet>  

                </p:dataTable> 

            </h:form>    
        </p:dialog>

    </h:body>

</html>
